package org.edu.modules.oa.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.swagger.models.auth.In;
import org.edu.modules.oa.entity.VeOaCarJiayouEntity;
import org.edu.modules.oa.mapper.IVeOaCarJiayouMapper;
import org.edu.modules.oa.service.IVeOaCarJiayouService;
import org.edu.modules.oa.vo.VeOaCarJiayouExportVo;
import org.edu.modules.oa.vo.VeOaCarJiayouShowVo;
import org.edu.modules.oa.vo.VeOaCarJiayouTableVo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Service
public class VeOaCarJiayouServiceImpI  extends ServiceImpl<IVeOaCarJiayouMapper, VeOaCarJiayouEntity> implements IVeOaCarJiayouService {

    @Resource
    private IVeOaCarJiayouMapper iVeOaCarJiayouMapper;



    @Override
    public HashMap<String, Object> showTable(VeOaCarJiayouTableVo veOaCarJiayouTableVo , Integer startPage, Integer pageSize) {
        // 调用mybatisplus的分页
        IPage<VeOaCarJiayouEntity> page=new Page<>(startPage,pageSize);
        // 拼接查询条件
        QueryWrapper<VeOaCarJiayouEntity> tableWrapper = new QueryWrapper<>();
        if(veOaCarJiayouTableVo.getCarName()!=null&&veOaCarJiayouTableVo.getCarName()!=""){
            tableWrapper.like("car_name",veOaCarJiayouTableVo.getCarName());

        }
        if(veOaCarJiayouTableVo.getJingbanUser()!=null&&veOaCarJiayouTableVo.getJingbanUser()!=""){
            tableWrapper.like("jingban_user",veOaCarJiayouTableVo.getJingbanUser());

        }
        if(veOaCarJiayouTableVo.getJiayouAddress()!=null&&veOaCarJiayouTableVo.getJiayouAddress()!=""){
            tableWrapper.like("jiayou_address",veOaCarJiayouTableVo.getJiayouAddress());

        }
        if(veOaCarJiayouTableVo.getDriverUser()!=null&&veOaCarJiayouTableVo.getDriverUser()!=""){
            tableWrapper.like("driver_user",veOaCarJiayouTableVo.getDriverUser());

        }
        if(veOaCarJiayouTableVo.getCarId()!=null&&veOaCarJiayouTableVo.getCarId()!=0){
            tableWrapper.eq("car_id",veOaCarJiayouTableVo.getCarId());

        }
        tableWrapper.orderByDesc("create_time");

        // 条件加上分页查询
        page =iVeOaCarJiayouMapper.selectPage(page,tableWrapper);
         List<VeOaCarJiayouEntity> entityList=page.getRecords();

        List<VeOaCarJiayouExportVo> voelist =new ArrayList<>();
        // for循环把需要用的字段加到 导出集合里面去
        for (VeOaCarJiayouEntity o:entityList){
            VeOaCarJiayouExportVo tableVo =new VeOaCarJiayouExportVo();
            tableVo.setId(o.getId());
            tableVo.setCarName(o.getCarName());

            // 时间类型转换成字符串
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            tableVo.setJiayouDate(formatter.format(o.getJiayouDate()));
            tableVo.setJingbanUser(o.getJingbanUser());
            tableVo.setDriverUser(o.getDriverUser());
            tableVo.setJiayouAddress(o.getJiayouAddress());
            tableVo.setFuelConsumption(o.getFuelConsumption());
            tableVo.setTotalPrice(o.getTotalPrice());
            voelist.add(tableVo);


        }
        int count =iVeOaCarJiayouMapper.selectCount(tableWrapper);
        // 把查出来的东西存到map里面去
        HashMap<String , Object> map = new HashMap<>();
        map.put("list",voelist);
        map.put("count",count);

        // 查询表格总行数
        return map;
    }

    @Override
    public Integer deleteRecord(Integer id) {

        int result = iVeOaCarJiayouMapper.deleteById(id);
        return result;
    }

    @Override
    public List<VeOaCarJiayouExportVo> xporte(VeOaCarJiayouTableVo veOaCarJiayouTableVo) {

        // 拼接查询条件
        QueryWrapper<VeOaCarJiayouEntity> tableWrapper = new QueryWrapper<>();
        tableWrapper.eq("is_deleted",0);
        if(veOaCarJiayouTableVo.getCarId()!=null&&veOaCarJiayouTableVo.getCarId()!=0){
            tableWrapper.eq("car_id",veOaCarJiayouTableVo.getCarId());
        }
        // 查询加油表的所有数据
        List<VeOaCarJiayouEntity> entitylist =iVeOaCarJiayouMapper.selectList(tableWrapper);

        // 表格集合的VO
        List<VeOaCarJiayouExportVo> voList=new ArrayList<>();
        // 把查出来的东西加入到表格VO里面去
        for(VeOaCarJiayouEntity entity:entitylist){
            VeOaCarJiayouExportVo vo =new VeOaCarJiayouExportVo();
            vo.setCarName(entity.getCarName());
            // 时间类型转换成字符串
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            vo.setJiayouDate(formatter.format(entity.getJiayouDate()));

            vo.setJingbanUser(entity.getJingbanUser());
            vo.setDriverUser(entity.getDriverUser());
            vo.setJiayouAddress(entity.getJiayouAddress());
            vo.setStartFuel(entity.getStartFuel());
            vo.setAfterFuel(entity.getAfterFuel());
            vo.setFuelConsumption(entity.getFuelConsumption());
            vo.setPrice(entity.getPrice());
            vo.setTotalPrice(entity.getTotalPrice());
            vo.setBackInfo(entity.getBackInfo());

            voList.add(vo);
        }
        return  voList;

    }

    @Override
    public Integer addFuelManager(VeOaCarJiayouEntity veOaCarJiayouEntity) {
       Integer reust= iVeOaCarJiayouMapper.insert(veOaCarJiayouEntity);
        return reust;
    }

    @Override
    public VeOaCarJiayouShowVo showFuelManager(Integer id) {
        VeOaCarJiayouEntity entity=  iVeOaCarJiayouMapper.selectById(id);
        VeOaCarJiayouShowVo showVo=new VeOaCarJiayouShowVo();
        showVo.setCarName(entity.getCarName());

        // 时间类型转换成字符串
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        showVo.setJiayouDate(formatter.format(entity.getJiayouDate()));
        showVo.setJingbanUser(entity.getJingbanUser());
        showVo.setDriverUser(entity.getDriverUser());
        showVo.setJiayouAddress(entity.getJiayouAddress());
        showVo.setStartFuel(entity.getStartFuel());
        showVo.setAfterFuel(entity.getAfterFuel());
        showVo.setFuelConsumption(entity.getFuelConsumption());
        showVo.setPrice(entity.getPrice());
        showVo.setTotalPrice(entity.getTotalPrice());
        showVo.setBackInfo(entity.getBackInfo());
        showVo.setCreateTime(entity.getCreateTime());
        showVo.setCreateByName(entity.getCreateByName());
        showVo.setCarId(entity.getCarId());
        return showVo ;
    }

    @Override
    public Integer amendFuelManager(VeOaCarJiayouEntity veOaCarJiayouEntity) {
        QueryWrapper<VeOaCarJiayouEntity> tableWrapper = new QueryWrapper<>();
        tableWrapper.eq("id",veOaCarJiayouEntity.getId());
        Integer reust=  iVeOaCarJiayouMapper.update(veOaCarJiayouEntity,tableWrapper);
        return reust;
    }

    @Override
    public HashMap<String, Object> advancedQuery(String advancedQuery) {
        // 把查出来的东西存到map里面去
        HashMap<String , Object> map = new HashMap<>();
            List<VeOaCarJiayouEntity> entityList= iVeOaCarJiayouMapper.advancedQuery(advancedQuery);
       Integer count= iVeOaCarJiayouMapper.advancedQueryCount(advancedQuery);


        List<VeOaCarJiayouExportVo> voelist =new ArrayList<>();
        // for循环把需要用的字段加到 导出集合里面去
        for (VeOaCarJiayouEntity o:entityList){
            VeOaCarJiayouExportVo tableVo =new VeOaCarJiayouExportVo();
            tableVo.setId(o.getId());
            tableVo.setCarName(o.getCarName());

            // 时间类型转换成字符串
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            tableVo.setJiayouDate(formatter.format(o.getJiayouDate()));
            tableVo.setJingbanUser(o.getJingbanUser());
            tableVo.setDriverUser(o.getDriverUser());
            tableVo.setJiayouAddress(o.getJiayouAddress());
            tableVo.setFuelConsumption(o.getFuelConsumption());
            tableVo.setTotalPrice(o.getTotalPrice());
            voelist.add(tableVo);


        }

        map.put("list",voelist);
        map.put("count",count);

        // 查询表格总行数
        return map;

    }


}
